home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib15.dsk / PRINT FORMATTER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  53 lines

  1. 10  REM  **********************
  2. 11  REM  * PRINT FORMATTER    *
  3. 12  REM  * BY R. SCOTT SMITH  *
  4. 13  REM  * COPYRIGHT (C) 1983 *
  5. 14  REM  * BY MICROSPARC, INC *
  6. 15  REM  * LINCOLN, MA. 01773 *
  7. 16  REM  **********************
  8. 20  REM  MC= MAXIMUM NO. OF COLUMNS OF PRINTER MODE
  9. 30  REM  NC= NO. OF COLUMNS TO BE  PRINTED
  10. 40  REM  SP= SPACE BETWEEN ENTRIES
  11. 50  REM  SP= 0 NORMAL PRINT
  12. 60  REM  SP= -1 APPENDS ENTRIES TOGETHER IN ONE PARAGRAPH
  13. 70  REM  SP= N PUTS N BLANK LINES BETWEEN ENTRIES
  14. 80  REM  RJ > 0 FOR RIGHT JUSTIFICATION
  15. 90  REM 
  16. 99  GOTO 1000: REM  START OF PROGRAM
  17. 100  REM  PRINT FORMATTER SUB-ROUTINE
  18. 110  IF NC = 0  THEN NC = 40:MC = 40
  19. 120  IF MC <NC  THEN MC = MC +40: GOTO 120
  20. 130 LM =  INT((MC -NC)/2) +1
  21. 140  IF  RIGHT$(A$,1) < >" "  THEN A$ = A$ +" "
  22. 150  IF  RIGHT$(A$,2) = ". "  OR  RIGHT$(A$,2) = "? "  OR  RIGHT$(A$,2) = "! "  THEN A$ = A$ +" "
  23. 160 X =  LEN(X$): IF  LEN(A$) >250 -X  THEN X$ = X$ + LEFT$(A$,250 -X): GOSUB 220:X$ = X$ + MID$ (A$,251 -X)
  24. 170  IF A$ = " "  THEN  GOSUB 400: GOTO 190
  25. 180 X$ = X$ +A$: GOTO 220
  26. 190 S1 = SP +1
  27. 200  IF S1 >0  THEN  GOSUB 400:S1 = S1 -1: GOTO 200
  28. 210  RETURN 
  29. 220  REM  FIND BLANK
  30. 230  IF  LEFT$(X$,1) = " "  AND  LEFT$(X$,3) < >" "  THEN X$ =  MID$ (X$,2): GOTO 230
  31. 240  IF  LEN(X$) <NC  THEN 190
  32. 250 Y$ = X$
  33. 260  FOR L1 = NC +1 TO 1  STEP  -1: IF  MID$ (Y$,L1,1) = " "  THEN 280
  34. 270  NEXT :L1 = NC +1
  35. 280 X$ =  LEFT$(Y$,L1 -1): GOSUB 300: IF L1 >0  THEN X$ =  MID$ (Y$,L1)
  36. 290  GOTO 230
  37. 300  REM  RIGHT JUSTIFY
  38. 310  IF   NOT RJ  THEN 400
  39. 320 RM = NC +1 -L1:J1 = L1
  40. 330  IF  RIGHT$(X$,1) = " "  THEN X$ =  LEFT$(X$, LEN(X$) -1):RM = RM +1:J1 = J1 -1: GOTO 330
  41. 340  IF RM <1  THEN 400
  42. 350  FOR J2 = 1 TO J1: IF  MID$ (X$,J2,1) < >" "  THEN 370
  43. 360  NEXT : GOTO 400
  44. 370  FOR J3 = J1 TO J2  STEP  -1: IF RM <1  THEN 400
  45. 380  IF  MID$ (X$,J3,1) = " "  THEN X$ =  LEFT$(X$,J3) + MID$ (X$,J3):RM = RM -1
  46. 390  NEXT : IF RM >0  THEN 370
  47. 400  REM  PRINT OUT
  48. 410  IF S1 -1 = SP  AND X$ = ""  THEN  RETURN 
  49. 420  HTAB LM: PRINT X$;
  50. 430  IF  LEN(X$) < >MC  THEN  PRINT 
  51. 440  REM  PUT "PRINT" HERE FOR DOUBLE SPACING
  52. 450 X$ = "": RETURN 
  53. 460  REM  END OF LISTING #1